from typing import Any, Union

from django.core.handlers.wsgi import WSGIRequest
from django.shortcuts import render
from django.views.generic import View
from django.http import HttpResponse, JsonResponse, HttpResponseNotFound

from . import utils


class Menu(View):
    """ Обрабатываем общие запросы связанные с меню """

    def get(self,
            request: WSGIRequest
            ) -> Union[HttpResponse, JsonResponse, HttpResponseNotFound]:
        return utils.MenuUtils().get_necessary_information(request)


class SingleMenu(View):
    """ Обрабатываем запросы связанные с отдельным меню """

    def get(self, request: WSGIRequest, menu_name: str) -> HttpResponse:
        return utils.MenuUtils().show_single_menu(request, menu_name)


class MenuHomePage(View):
    """ Обрабатываем запросы связанные с отображением базовой страницы меню """

    def get(self, request: WSGIRequest) -> HttpResponse:
        return render(request, 'menu/base_menu.html')
